#pragma once
template <typename TElem>
class TQueue
{
protected:
	long len;
public:
	TQueue(void){};
	virtual ~TQueue(void){};
	long GetLen(void){return len;};
	char IsEmpty(){return (len<=0)?1:0;};
	virtual TElem& QPush(TElem &elem)=0;
	virtual TElem& QPop(void)=0;
	virtual TElem& GetHead(void)=0;
	virtual TElem& RollDown()=0;
	virtual TElem& RollUp()=0;
	virtual void Clear()=0;
};
